package com.atguigu.controller;

import com.atguigu.pojo.User;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * 异步的ajax请求，和json格式的交互
 *
 * 注解： @RestController
 * @RestController = @Controller + @ResponseBody
 * 一个顶两个
 */

@RestController
@RequestMapping("ajaxJson")
public class AjaxJsonController {
    /**
     * 接收客户端的请求参数
     * 请求参数是Map集合，是JSON格式
     */
    @RequestMapping("sendMap")
    public String sendMap(@RequestBody Map<String,Object> map){
        System.out.println("map = " + map);
        return "成功";
    }



    /**
     * 接收客户端请求参数
     * 请求参数是数组，是json格式
     * 数组转成List集合
     */
    @RequestMapping("sendArray")
    public  String sendArray(@RequestBody List<String> list){
        for(String s : list){
            System.out.println("s = " + s);
        }
        return "成功";
    }

    /**
     * 接收客户端请求
     * 请求参数是pojo对象，是json数据格式
     * 客户端的请求参数是json格式的数据，SpringMVC默认的数据请求不是json
     * 注解@RequestBody,告诉MVC，解析客户的发送来的Json
     */
    @RequestMapping("sendPojo")
    public String sendPojo( User user){
        System.out.println("user = " + user);
        return "成功";
    }

    /**
     * 接收客户端请求
     * 请求参数是普通文本 (处理器的方法，以参数形态接收)
     * SpringMVC 认为返回的字符串，找一个视图（页面）进行转发
     * success 没有响应浏览器，直接将字符串响应回客户端，不要转发
     * 注解： @ResponseBody 加方法的返回值上
     * SpringMVC将，return 后面的内容，转成JSON格式的字符串响应客户端，不在找视图
     */
    @RequestMapping("sendText")
    public String sendText (String username,String password){
        System.out.println("username = " + username);
        System.out.println("password = " + password);
        return "success";
    }
}
